package com.qinggeng.project.system.service.impl;

import com.qinggeng.common.enums.ShowTypeEnum;
import com.qinggeng.common.exception.CustomException;
import com.qinggeng.framework.web.domain.AjaxResult;
import com.qinggeng.project.api.security.utils.ApiUtils;
import com.qinggeng.project.system.domain.UserWishGift;
import com.qinggeng.project.system.mapper.UserWishGiftMapper;
import com.qinggeng.project.system.service.IGoodsGiftService;
import com.qinggeng.project.system.service.IUserWishGiftService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * 用户心愿清单Service业务层处理
 *
 * @author qinggeng
 * @date 2020-07-27
 */
@Slf4j
@Service
public class UserWishGiftServiceImpl implements IUserWishGiftService
{
    @Resource
    private UserWishGiftMapper userWishGiftMapper;
    @Autowired
    private IGoodsGiftService goodsGiftService;

    /**
     * 查询订单商品赠品
     *
     * @param ordersGoodsGiftId 订单商品赠品ID
     * @return 订单商品赠品
     */
    @Override
    public UserWishGift selectUserWishGiftById(Long ordersGoodsGiftId)
    {
        return userWishGiftMapper.selectUserWishGiftById(ordersGoodsGiftId);
    }

    /**
     * 查询订单商品赠品列表
     *
     * @param ordersGoodsGift 订单商品赠品
     * @return 订单商品赠品
     */
    @Override
    public List<UserWishGift> selectUserWishGiftList(UserWishGift ordersGoodsGift)
    {
        return userWishGiftMapper.selectUserWishGiftList(ordersGoodsGift);
    }

    /**
     * 新增订单商品赠品
     *
     * @param ordersGoodsGift 订单商品赠品
     * @return 结果
     */
    @Override
    public int insertUserWishGift(UserWishGift ordersGoodsGift)
    {
        return userWishGiftMapper.insertUserWishGift(ordersGoodsGift);
    }

    /**
     * 修改订单商品赠品
     *
     * @param userWishGift 订单商品赠品
     * @return 结果
     */
    @Override
    public int updateUserWishGift(UserWishGift userWishGift)
    {return userWishGiftMapper.updateUserWishGift(userWishGift);

    }

    /**
     * 批量删除订单商品赠品
     *
     * @param ordersGoodsGiftIds 需要删除的订单商品赠品ID
     * @return 结果
     */
    @Override
    public int deleteUserWishGiftByIds(Long[] ordersGoodsGiftIds)
    {
        return userWishGiftMapper.deleteUserWishGiftByIds(ordersGoodsGiftIds);
    }

    /**
     * 删除订单商品赠品信息
     *
     * @param ordersGoodsGiftId 订单商品赠品ID
     * @return 结果
     */
    @Override
    public int deleteUserWishGiftById(Long ordersGoodsGiftId)
    {
        return userWishGiftMapper.deleteUserWishGiftById(ordersGoodsGiftId);
    }

    @Override
    public UserWishGift selectUserWishGiftByOrdersId(Long ordersId) {
        return userWishGiftMapper.selectUserWishGiftByOrdersId(ordersId);
    }

    @Override
    public UserWishGift insertUserWishGift(Long ordersId,String giftId,Integer drawTimes,Integer drawType) {
        UserWishGift userWishGift=userWishGiftMapper.selectUserWishGiftByOrdersId(ordersId);
        if(userWishGift!=null){
            try{
                //用户加入过心愿清单，更新心愿清单
                userWishGift.setGiftId(giftId);
                int rows=userWishGiftMapper.updateUserWishGift(userWishGift);
                if(rows<1){
                    return userWishGiftMapper.selectUserWishGiftByOrdersId(ordersId);
                }
                return userWishGift;
            }catch (Exception e){
                log.error(e.getMessage());
                return userWishGiftMapper.selectUserWishGiftByOrdersId(ordersId);
            }
        }
        //用户未加入过心愿清单，直接加入
        userWishGift = new UserWishGift();
        userWishGift.setUserId(ApiUtils.getUserId());
        userWishGift.setGiftId(giftId);
        userWishGift.setDrawTimes(drawTimes);
        userWishGift.setOrdersId(ordersId);
        userWishGift.setDrawType(drawType);
        //加入心愿清单(drawType:0=普通奖品)
        int rows = userWishGiftMapper.insertUserWishGift(userWishGift);
        if (rows < 1) {
            throw new CustomException("加入心愿清单失败！", ShowTypeEnum.用户.getValue());
        }
        return userWishGift;

    }

    @Override
    public UserWishGift updateUserWishGiftDrawTimes(UserWishGift userWishGift) {
        try{
           userWishGiftMapper.updateUserWishGiftDrawTimes(userWishGift);
        }catch (Exception e){
            e.printStackTrace();
        }
        return userWishGiftMapper.selectUserWishGiftById(userWishGift.getUserWishGiftId());
    }
}
